图像鲁棒性

您所在的位置:网站首页 matlab 图片裁剪 图像鲁棒性

图像鲁棒性

2024-07-17 15:10| 来源: 网络整理| 查看: 265

一、14种图像攻击

( a )JPEG压缩。质量因子Q分别为10%、30%、50%、70%、90%。

( b )高斯噪声。平均μ为0,方差σ分别为0.001、0.005和0.1。

( c )椒盐噪音。平均μ为0,方差σ分别为0.001、0.005、0.1。

( d )散斑噪声。平均μ为0,方差σ分别为0.01、0.05、0.1。

( e )平均滤波。窗口大小分别为3 × 3、5 × 5和7 × 7。

( f )中值滤波。窗口大小分别为3 × 3、5 × 5和7 × 7。

( g )高斯低通滤波。窗口大小分别为3 × 3、5 × 5和7 × 7。

( h )中心修剪,比例为20%和50%。

( i )边缘修剪,比例为10%和20%。

( j )旋转。旋转角度分别为10°、30°、50°。

( k )平移。由于数据库的图像大小不同,在Holidays数据库中的平移距离分别为是(80,50)、(160,100)和(320,200)。ImageNet数据库中的平移距离为分别为(16,10),(32,20)、(40,25)。

( l )缩放。缩放比例分别为0.3、0.5、0.75、1.5和3。

( m )颜色直方图均衡化。

( n )伽马校正系数为0.8。

二、matlab实现

1、JPEG压缩攻击

% jpegattack.m function jpegattack_img=jpegattack(img,qualityfactor) imwrite(img,'jpegattackimage.jpg','jpg','quality',qualityfactor); jpegattack_img = imread('jpegattackimage.jpg'); end

2、高斯噪声攻击

% gaussianattack.m function gaussianattack_img=gaussianattack(img,var1) gaussianattack_img=imnoise(img,'gaussian',0,var1); end

3、椒盐噪声攻击

% saltpepperattack.m function saltpepperattack_img=saltpepperattack(img,var2) saltpepperattack_img=imnoise(img,'salt & pepper',var2); end

4、散斑噪声攻击

% speckleattack.m function speckleattack_img=speckleattack(img,var3) speckleattack_img=imnoise(img,'speckle',var3); end

5、高斯低通滤波攻击

% gaussianlowpassattack.m function gaussianlowpassattack_img=gaussianlowpassattack(img,k) h = fspecial('gaussian',[k,k]); % B=imfilter(A,h,options,...)其中options可以是: % 'symmetric'边界之外的输入数组值是通过沿数组边界对数组进行镜面反射得到 % 'replicate'边界之外的输入数组值假定为等于最近的数组边界值 % 'circular'边界之外的输入数组值是通过隐式假设输入数组具有周期性来计算(以上为填充选项) % 'same'默认选项.输出数组与输入数组大小相同 % 'full'输出数组是完全滤波后的结果(以上为输出大小选项) % 'corr'默认选项.使用相关性执行多维滤波,这与filter2执行滤波的方式相同 % 'conv'使用卷积执行多维滤波(以上为相关性和卷积选项) gaussianlowpassattack_img=imfilter(img,h,'replicate'); end

6、均值滤波攻击

% meanattack.m function meanattack_img=meanattack(img,n) % 第一种方法 % h=fspecial('average',[n,n]); % meanattack_img=imfilter(img,h); % 第二种方法 % imfilter函数为多维图像的 N 维滤波 h=fspecial('average',[n,n]); img_m(:,:,1)=imfilter(img(:,:,1),h); img_m(:,:,2)=imfilter(img(:,:,2),h); img_m(:,:,3)=imfilter(img(:,:,3),h); meanattack_img=img_m; end

7、中值滤波攻击

% medianattack.m function medianattack_img=medianattack(img,m) % medfilt2函数为二维中位数滤波,第一个参数必须是二维的. % 当需要对彩图像进行中值滤波时,需要分别对三个R,G,B通道进行中值滤波即可 medianattack_img(:,:,1)=medfilt2(img(:,:,1),[m,m]); medianattack_img(:,:,2)=medfilt2(img(:,:,2),[m,m]); medianattack_img(:,:,3)=medfilt2(img(:,:,3),[m,m]); end

8、中心裁剪攻击

% centeredattack.m function centeredattack_img=centeredattack(img,percentage) img_cc=img; row=size(img_cc,1);% row为图像的长 col=size(img_cc,2);% col为图像的宽 row_begin=round((row-round(row*percentage))/2); row_end=round((col-round(col*percentage))/2)+round(row*percentage); col_begin = round((col-round(col*percentage))/2); col_end = round((col-round(col*percentage))/2) + round(col*percentage); img_cc(row_begin:row_end,col_begin:col_end,:) = 0;% 将选中的区域的值置为0,即显示为白色 centeredattack_img=img_cc; end

9、边缘裁剪攻击

% edgeattack.m function edgeattack_img=edgeattack(img,percentage) img_ec=img; row=size(img_ec,1); col=size(img_ec,2); row_half=round(round(row*percentage)/2); col_half=round(round(col*percentage)/2); % 将图像四条边缘条值置为0,即显示为黑色 img_ec(1:row_half,:,:) = 0; img_ec(:,1:col_half,:) = 0; img_ec((row-row_half):row,:,:) = 0; img_ec(:,(col-col_half):col,:) = 0; edgeattack_img=img_ec; end

10、旋转攻击

% rotationattack.m function rotationattack_img=rotationattack(img,angle) % J=imrotate(I,angle,method,bbox)中method是文本字符串,需要引号引出,method包括:'nearest'-最临近插值(默认值)、'bilinear'-双线性插值、'bicubic’-双三次插值 % bbox是文本字符串,需要引号引出,bbox包括:'crop’输出的图像B和输入的图像A保持一致的尺寸,裁剪旋转的图像至合适的大小;'loose’输出足够容纳整个旋转图像的图像B,图像B通常比图像A大-默认值 rotationattack_img=imrotate(img,angle,'bicubic','crop');% 此函数将图像I围绕其中心点逆时针方向旋转angle度。要顺时针旋转图像,请为angle指定负值。 end

11、平移攻击

% translationattack.m function translationattack_img=translationattack(img,location) row=size(img,1); col=size(img,2); image_t=zeros(row,col,3,'uint8');% 注意一定需要加上'uint8',否则只能显示白色图像 image_t((location(1,1)+1):row,(location(1,2)+1):col,:,:)=img(1:(row-location(1,1)),1:(col-location(1,2)),:,:); translationattack_img=image_t; end

12、缩放攻击

% rescalingattack.m function rescalingattack_img=rescalingattack(img,scale) row=size(img,1); col=size(img,2); row_scaling=round(row*scale);% 考虑小数的情况,取四舍五入 col_scaling=round(col*scale); image_s=imresize(img,[row_scaling,col_scaling]); rescalingattack_img=image_s; end

13、颜色直方图均衡化攻击

% histogramattack.m function histogramattack_img=histogramattack(img) % histeq函数使用直方图均衡增强对比度(主要针对灰度图像使用,若对RGB图像处理,则分别需要对三个r,g,b通道处理) % J=histeq(I,n) 指定直方图均衡后的灰度级数n,默认值为64 % histogramattack_img=histeq(img)使用该语句只能处理一个通道 r=img(:,:,1); g=img(:,:,2); b=img(:,:,3); image_h(:,:,1)=histeq(r,256); image_h(:,:,2)=histeq(g,256); image_h(:,:,3)=histeq(b,256); histogramattack_img=image_h; end

14、伽马校正攻击

% gammaattack.m function gammaattack_img=gammaattack(img,gamma) % 第一种写法 % img=im2double(img);% 若不使用im2double,会报错:错误使用 .^, 整数只能提升为正整数幂 % gammaattack_img=img.^gamma; % 第二种写法 % J=imadjust(I,[low_in high_in],[low_out high_out],gamma),imadjust函数调整图像强度值或颜色图 % 将灰度图像 I 中的强度值映射到 J 中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值,其中 gamma指定描述值I和值J关系的曲线形状 gammaattack_img=imadjust(img,[],[],gamma); end

15、主函数

% main.m clc;clear;close all; N=512; img=imread('football.jpg'); img=imresize(img,[N N],'bicubic');% 采用双三次插值(bicubic)将图像大小归一化为512*512大小,B = imresize(A,[mrows ncols],method)将图片A由参数method指定的插值运算方法来改变图像的大小到长宽为[mrows ncols] % 1、JPEG压缩攻击(qualityfactor可取参数10,30,50,70,90) qualityfactor=10; jpegattack_img=jpegattack(img,qualityfactor); figure(1), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(jpegattack_img); title('JPEG压缩攻击后的图像'); % 2、高斯噪声攻击(var1可取参数0.001,0.005,0.1) var1=0.001; gaussianattack_img=gaussianattack(img,var1); figure(2), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(gaussianattack_img); title('高斯噪声攻击后的图像'); % 3、椒盐噪声攻击(var2可取参数0.001,0.005,0.1) var2=0.001; saltpepperattack_img=saltpepperattack(img,var2); figure(3), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(saltpepperattack_img); title('椒盐噪声攻击后的图像'); % 4、散斑噪声攻击(var3可取参数0.01,0.05,0.1) var3=0.01; speckleattack_img=speckleattack(img,var3); figure(4), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(speckleattack_img); title('散斑噪声攻击后的图像'); % 5、高斯低通滤波攻击(k1可取参数3、5、7) k1=3; gaussianlowpassattack_img=gaussianlowpassattack(img,k1); figure(5), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(gaussianlowpassattack_img); title('高斯低通滤波攻击后的图像'); % 6、均值滤波攻击(k2可取参数3、5、7) k2=3; meanattack_img=meanattack(img,k2); figure(6), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(meanattack_img); title('均值滤波攻击后的图像'); % 7、中值滤波攻击(k3可取参数3、5、7) k3=3; medianattack_img=medianattack(img,k3); figure(7), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(medianattack_img); title('中值滤波攻击后的图像'); % 8、中心裁剪攻击(percentage可取参数0.2和0.5) percentage=0.2; centeredattack_img = centeredattack(img,percentage); figure(8), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(centeredattack_img); title('中心裁剪攻击后的图像'); % 9、边缘裁剪攻击(percentage可取参数0.1和0.2) percentage=0.1; edgeattack_img = edgeattack(img,percentage); figure(9), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(edgeattack_img); title('边缘裁剪攻击后的图像'); % 10、旋转攻击(angle可取参数10,30和50) angle=30; rotationattack_img=rotationattack(img,angle); figure(10), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(rotationattack_img); title('旋转攻击后的图像'); % 11、平移攻击(在Holidays数据集中(80,50),(160,100)和(320,200),注意图像规格为512*512) location=[80,50]; translationattack_img=translationattack(img,location); figure(11), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(translationattack_img); title('平移攻击后的图像'); % 12、缩放攻击(scale可取参数0.3,0.5,0.75,1.5和3) scale=3; rescalingattack_img=rescalingattack(img,scale); figure(12), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(rescalingattack_img); title('缩放攻击后的图像'); % 13、颜色直方图均衡化攻击(无参数) histogramattack_img=histogramattack(img); figure(13), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(histogramattack_img); title('颜色直方图均衡化攻击后的图像'); % 14、伽马校正攻击(gamma可取参数0.8) gamma=0.8; gammaattack_img=gammaattack(img,gamma); figure(14), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(gammaattack_img); title('伽马校正攻击后的图像');

三、matlab实现效果

1、JPEG压缩攻击 在这里插入图片描述 2、高斯噪声攻击 在这里插入图片描述

3、椒盐噪声攻击 在这里插入图片描述

4、散斑噪声攻击 在这里插入图片描述

5、高斯低通滤波攻击 在这里插入图片描述

6、均值滤波攻击 在这里插入图片描述

7、中值滤波攻击 在这里插入图片描述

8、中心裁剪攻击 在这里插入图片描述

9、边缘裁剪攻击 在这里插入图片描述

10、旋转攻击 在这里插入图片描述

11、平移攻击 在这里插入图片描述

12、缩放攻击 在这里插入图片描述

13、颜色直方图均衡化攻击 在这里插入图片描述

14、伽马校正攻击 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3